Aidemy OpenCV基礎
Reference
Aidemy
OpenCV
画像の読み込み・表示
code: Python
import numpy as np
import cv2
img = cv2.imread("cleansing_data/sample.jpg")
cv2.imshow("show", img)
画像の作成・保存
code: Python
import numpy as np
import cv2
# 画像のサイズを決める
img_size = (512, 512)
# サイズが512 × 512の緑色の画像を作成
my_img = np.array([[0, 255, 0 for _ in range(img_size1)] for _ in range(img_size0)], dtype="uint8") cv2.imshow("sample", my_img)
cv2.imwrite("my_green_img.jpg", my_img)
トリミングとリサイズ
code: Python
import numpy as np
import cv2
img = cv2.imread("cleansing_data/sample.jpg")
my_img = cv2.resize(img, (img.shape1 // 3, img.shape0 // 3)) cv2.imshow("sample", my_img)
回転・反転
code: Python
import numpy as np
import cv2
img = cv2.imread("cleansing_data/sample.jpg")
my_img = cv2.flip(img, 0)
cv2.imshow("sample", my_img)
色調変換・色反転
code: Python
import numpy as np
import cv2
img = cv2.imread("cleansing_data/sample.jpg")
img = cv2.bitwise_not(img)
cv2.imshow("sample", img)
閾値処理(二値化)
code: Python
import numpy as np
import cv2
img = cv2.imread("cleansing_data/sample.jpg")
# 第一引数が処理する画像
# 第二引数が閾値
# 第三引数が最大値(maxvalueとする)
# 第四引数はTHRESH_BINARY, THRESH_BINARY_INV, THRESH_TOZERO, THRESH_TRUNC, THRESH_TOZERO_INVのいずれか
# 今回は閾値を75,最大値を255(今回は使用されない)にして、THRESH_TOZEROを使う
# 閾値も返されるのでretvalで受け取る
retval, my_img = cv2.threshold(img, 100, 255, cv2.THRESH_BINARY)
cv2.imshow("show", my_img)
マスキング
code: Python
import numpy as np
import cv2
img = cv2.imread("cleansing_data/sample.jpg")
mask = cv2.imread("cleansing_data/mask.png", 0)
mask = cv2.resize(mask, (img.shape1, img.shape0)) retval, mask = cv2.threshold(mask, 0, 255, cv2.THRESH_BINARY_INV)
my_img = cv2.bitwise_and(img, img, mask = mask)
cv2.imshow("sample", my_img)
ぼかし
code: Python
import numpy as np
import cv2
img = cv2.imread("cleansing_data/sample.jpg")
# 第一引数は元の画像
# 第二引数はn✕nのnの値を指定(nは奇数)
# 第三引数はx軸方向の偏差(通常は0でよい)
my_img = cv2.GaussianBlur(img, (5, 5), 0)
cv2.imshow("sample", my_img)
ノイズの除去
code: Python
import numpy as np
import cv2
img = cv2.imread("cleansing_data/sample.jpg")
my_img = cv2.fastNlMeansDenoisingColored(img)
cv2.imshow("sample", my_img)
膨張・収縮
code: Python
import numpy as np
import cv2
img = cv2.imread("cleansing_data/sample.jpg")
# 膨張はcv2.dilate()
# 収縮はcv2.erode()
# フィルタの定義
# np.uint8とはデータの型を表している
# uint8は8ビットで表された符号なしの整数を示す
# 膨張
my_img = cv2.erode(img, filt)
cv2.imshow("sample", my_img)
# 比較のため元の写真を表示する
cv2.imshow("original", img)